// 对 axios 进行二次封装
import axios from "axios"
import { BASE_URL, TIMEOUT } from "./config"

class HYRequest {
  // baseURL 根路径， timeout 超时时间
  constructor(baseURL, timeout) {
    this.instance = axios.create({
      baseURL,
      timeout,
    })

    // 做一个相应拦截，拿出 res.data 的数据, interceptors.request请求拦截器  interceptors.response响应拦截器
    this.instance.interceptors.response.use((res) => {
      return res.data
    }, err => err)
  }

  // request方法发出请求
  request(config) {
    return this.instance.request(config)
  }

  get(config) {
    // 调用 request 发送数据,传入对应的 请求方法覆盖原来的
    return this.request({ ...config, method: "get"})
  }

  post(config) {
    return this.request({ ...config, method: "post"})
  }
}

const hyRequest = new HYRequest(BASE_URL, TIMEOUT)
export default hyRequest
